home *** CD-ROM | disk | FTP | other *** search
/ Deutsche Edition 1 / Deutsche Edition 1.iso / amok / amok_lha / amok18.lha / Profile / Profile.LiesMich < prev    next >
Text File  |  1993-08-15  |  7KB  |  224 lines

  1.  
  2.  
  3.                              P r o f i l e
  4.                           ===================
  5.  
  6.  
  7.                       © 1988 by Fridtjof Siebert
  8.                              Nobileweg 67
  9.                            7000 Stuttgart 40
  10.                           Tel.: (0)711/822509
  11.  
  12.  
  13.  
  14. Was?
  15.  
  16.   Dieses Programm ermöglicht es, das Laufzeitverhalten eines Modula-II
  17.   Programm zu überprüfen. Es erweitert ein Modula-II Programm um
  18.   Informationen über die Anzahl von Schleifendurchläufen und
  19.   Prozeduraufrufen. Außerdem wird der Wertebereich numerischer Variablen
  20.   bestimmt, und festgestellt, ob die Variablen im Programm überhaupt
  21.   jemals Werte zugewiesen bekommen. Die Informationen, die Profile aus
  22.   einem Programm holt, werden als Bemerkungen in einen neu erzeugten
  23.   Quelltext eingefügt.
  24.  
  25.  
  26. Weshalb?
  27.  
  28.   Profile entstand beim Lösen der 3. Aufgabe der 2. Runde des 7.
  29.   Bundeswettbewerbs Informatik. Da ich es für ein nützliches Programm
  30.   halte, habe ich mich entschlossen, es auch anderen Modula-II
  31.   Programmierern zugänglich zu machen.
  32.  
  33.  
  34. Wie?
  35.  
  36.   Um ein Programm untersuchen zu lassen, muß zunächst der Profiler
  37.   gestartet werden. Ihm kann dann der Name des Quelltextes angegeben
  38.   werden.
  39.  
  40.   Aus diesem Text erzeugt er einen neuen Quelltext, der unter dem Namen des
  41.   Originaltextes, wobei vor dem Punkt "Pro" eingefügt wird, gespeichert
  42.   wird. Es wird also z.B. aus "Test.mod" "TestPro.mod".
  43.  
  44.   Der erzeugte Text muß nun compiliert, gelinkt und ausgeführt werden.
  45.   Solange wartet Profile auf die RETURN-Taste. Nachdem das untersuchte
  46.   Programm beendet ist, muß diese Taste gedrückt werden. Das Programm hat
  47.   in das T:-Directory (T: muß z.B. mit "assign t: ram:" vorher erzeugt
  48.   worden sein!) die Datei ProfileData geschrieben, die Informationen über
  49.   Schleifendurchläufe, Prozeduraufrufe und Variablenbereiche enthält.
  50.  
  51.   Profile erzeugt nun den neuen Programmtext. Dieser enthält hinter allen
  52.   Variablendeklaration, Schleifenköpfen und hinter den BEGINs von
  53.   Prozeduren Bemerkungen, die Auskunft über Wertebereich, Anzahl der
  54.   Durchläufe und Aufrufe geben.
  55.  
  56.  
  57. Einschränkungen:
  58.  
  59.   Leider konnte ich aus Zeit- und Lustmangel das Programm nicht so
  60.   schreiben, daß jedes Modula-Programm untersucht werden kann. Folgende
  61.   Bedingungen müssen die bearbeiteten Programme erfüllen:
  62.  
  63.   - es dürfen keine lokalen Module verwendet werden.
  64.  
  65.   - Profile verarbeitet keine Importe. Damit dennoch einfache Ein- und
  66.     Ausgabeprozeduren, wie z.B. WriteString, ReadInt etc., benutzt werden
  67.     können, werden alle importierten Objekte als Prozeduren mit beliebig
  68.     vielen Parametern eines beliebigen Typs angesehen. Um Programme, die
  69.     importierte Objekte benutzen, dennoch verarbeiten zu können, reicht es
  70.     oft, wenn die Teile, in denen die importierten Sachen verwendet werden,
  71.     vor dem Starten von Profile mit "(*" und "*)" in eine Bemerkung
  72.     umgewandelt werden. Vor der Compilation der Datei XXXPro.mod können die
  73.     Bemerkungen in dieser wieder entfernt werden.
  74.  
  75.   - bei zu großen Konstanten (größer als 2 hoch 31) können Bereichsfehler
  76.     auftreten, die der Parser nicht abfängt.
  77.  
  78.   - die Prozeduren für REAL-Zahlen habe ich nicht getestet, daher treten
  79.     bei deren Verwendung wahrscheinlich Fehler auf.
  80.  
  81.   - variante Records sind nicht erlaubt.
  82.  
  83.   - Vorwärstdeklaration von Prozeduren sind nicht erlaubt.
  84.  
  85.   - Unterbereichstypen sind nicht immer kompatibel zu ihrem ursprünglichen
  86.     Typ. Bei Verwendung von Unterbereichstypen werden unberechtigt
  87.     Fehlermeldungen ausgegeben.
  88.  
  89.   Es tut mir natürlich Leid, daß ich all diese Einschränkungen
  90.   zurückgelassen habe. Ich habe jedoch noch viele andere Dinge zu tun und
  91.   bin nicht dazu gekommen, dies zu verbessern.
  92.  
  93.  
  94. Beispiel:
  95.  
  96.  
  97.   Um Profile zu demonstrieren, habe ich folgendes kleines Testprogramm
  98.   geschrieben:
  99.  
  100.     MODULE Test;
  101.  
  102.     VAR
  103.       v,x: INTEGER;
  104.  
  105.     PROCEDURE Add(VAR a: INTEGER; b: INTEGER): INTEGER;
  106.  
  107.     VAR c: INTEGER;
  108.  
  109.     BEGIN
  110.       c := a + b;
  111.       RETURN c;
  112.     END Add;
  113.  
  114.     BEGIN
  115.       v := 0;
  116.       WHILE v<100 DO
  117.         v := Add(v,5);
  118.       END;
  119.     END Test.
  120.  
  121.   Der von Profile erzeugte Text Test.pro sieht dann folgendermaßen aus:
  122.  
  123.     MODULE Test;
  124.  
  125.     VAR
  126.       v,x: INTEGER;
  127.     (* x: Variable nicht benutzt! *)
  128.     (* v: min = 0, max = 100 *)
  129.  
  130.     PROCEDURE Add(VAR a: INTEGER; b: INTEGER): INTEGER;
  131.     (* a: min = 0, max = 95 *)
  132.     (* b: min = 5, max = 5 *)
  133.  
  134.     VAR c: INTEGER;
  135.     (* c: min = 5, max = 100 *)
  136.  
  137.     BEGIN
  138.      (* 20 Aufrufe *)
  139.       c := a + b;
  140.       RETURN c;
  141.     END Add;
  142.  
  143.     BEGIN
  144.       v := 0;
  145.       WHILE v<100 DO
  146.      (* 20 Durchläufe *)
  147.         v := Add(v,5);
  148.       END;
  149.     END Test.
  150.  
  151.   Es ist also ein sehr übersichtliches und praktisches Ergebnis entstanden.
  152.   Da die Zusatztinformationen in Kommentarzeilen eingefügt wurden, kann das
  153.   Ergebnis nochmals compiliert werden.
  154.  
  155.   Der Dialog mit dem Profiler sieht folgendermaßen aus:
  156.  
  157.     M2-Profiler -- © 1989 by Fridtjof Siebert.
  158.     in> Test.mod
  159.      - Test.mod
  160.      + TestPro.mod
  161.      -> Bitte TestPro.mod compilieren und starten!
  162.         Danach RETURN drücken!
  163.      + Test.pro
  164.     in>
  165.     tschüß!
  166.  
  167. Paket:
  168.  
  169.   Folgende Dateien müssen in diesem Directory enthalten sein:
  170.  
  171.     Profile (dir):
  172.       .info                              47
  173.       Demos (dir):
  174.         Prim3.mod.info                    534
  175.         Prim1.info                        818
  176.         Prim3.mod                         558
  177.         .info                              94
  178.         Prim1.mod                         275
  179.         Prim1                           12068
  180.         Prim2                           12468
  181.         Prim3                           12292
  182.         Prim2.pro                        1332
  183.         Prim3.pro.info                    534
  184.         Prim3.info                        818
  185.         Prim2.mod.info                    534
  186.         Prim2.pro.info                    534
  187.         Prim2.info                        818
  188.         Prim1.mod.info                    534
  189.         Prim1.pro.info                    534
  190.         Prim2.mod                        1126
  191.         Prim3.pro                         760
  192.         Prim1.pro                         407
  193.       Demos:47038  /19       All:47038  /19
  194.       Profile.info                     1270
  195.       Demos.info                        947
  196.       Profile                         81344
  197.       Profile.LiesMich.info             710
  198.       Profile.LiesMich                 7209
  199.     Profile:91527  /6        All:138565 /25
  200.  
  201. Copyright:
  202.  
  203.   Profile ist NICHT Public Domain, sondern FREEWARE. Es darf frei kopiert
  204.   und an andere weitergegeben werden, dies jedoch nur, mit folgenden
  205.   Einschränkungen:
  206.  
  207.     - Das Paket darf nur vollständig weitergegeben werden. Fehlt eine
  208.       Datei, ist das Kopieren illegal.
  209.  
  210.     - Es ist nicht erlaubt, Änderungen irgendwelcher Art im Programm oder
  211.       den dazu gehörenden Dateien zu machen und diese weiter zu verbreiten.
  212.  
  213.     - Disketten, auf denen dieses Programm vertrieben wird, dürfen
  214.       höchstens 8 DM kosten. Einen höheren Preis sehe ich als eine
  215.       kommerzielle Nutzung an. Dafür ist diese Programm nicht freigegen.
  216.  
  217.   Wer das Programm nützlich findet, oder irgendwelche Vorschläge für
  218.   Verbesserungen oder Kritik hat, schreibe mir bitte.
  219.  
  220.  
  221. --- Fridtjof.
  222.  
  223.  
  224.